#include "pch.hpp"
#include "Glyph.hpp"

#include <engine.core/File.hpp>




AdvancedGlyph::AdvancedGlyph(QString fileName)
{
	QFile file;
	File::open(file, fileName);
	QImageReader reader(&file);

	if(!reader.read(&m_image))
		BOOSTEXT_THROW(exception(format("Unable to load '%1%': %2%") % fileName % reader.errorString()));

	QFileInfo info(fileName);
	m_fileName = info.absoluteFilePath();
	m_name = info.completeBaseName();

	m_size.x = m_image.width();
	m_size.y = m_image.height();
}
///////////////////////////////////////////////////////////////////////////////////////////////////

AdvancedGlyph::AdvancedGlyph(QDomElement element, QDir path)
	: Glyph(element, path)
	, m_fileName(path.absoluteFilePath(element.attribute("file")))
{
	QFile file;
	File::open(file, m_fileName);
	QImageReader reader(&file);

	if(!reader.read(&m_image))
		BOOSTEXT_THROW(exception(format("Unable to load '%1%': %2%") % m_fileName % reader.errorString()));
}
///////////////////////////////////////////////////////////////////////////////////////////////////




QImage AdvancedGlyph::image() const
{
	return m_image;
}
///////////////////////////////////////////////////////////////////////////////////////////////////

QString AdvancedGlyph::fileName() const
{
	return m_fileName;
}
///////////////////////////////////////////////////////////////////////////////////////////////////




void AdvancedGlyph::setName(QString name)
{
	m_name = name;
}
///////////////////////////////////////////////////////////////////////////////////////////////////

void AdvancedGlyph::setPos(int2 pos)
{
	m_pos = pos;
}
///////////////////////////////////////////////////////////////////////////////////////////////////




QDomElement AdvancedGlyph::domElement(QDomDocument& document) const
{
	QDomElement element = Glyph::domElement(document);
	setAttributes(element);
	return element;
}
///////////////////////////////////////////////////////////////////////////////////////////////////

void AdvancedGlyph::setAttributes(QDomElement& element) const
{
	Glyph::setAttributes(element);
	element.setAttribute("file", m_fileName);
}
///////////////////////////////////////////////////////////////////////////////////////////////////
